#include<func.h>
//在2号信号的处理流程中，3号信号到来时，不响应
void sigfunc(int signum,siginfo_t *p,void *p1)
{
    printf("befer sleep,%d sig is coming\n",signum);
    sleep(3);
    printf("after sleep,%d sig is coming\n",signum);
}

int main()
{
    struct sigaction act;
    bzero(&act,sizeof(act));
    act.sa_sigaction=sigfunc;//将信号处理函数赋给sa_sigaction
    act.sa_flags=SA_SIGINFO;//加上SA_SIGINFO，sa_sigaction函数生效
    sigemptyset(&act.sa_mask);//清空掩码集合
    sigaddset(&act.sa_mask,SIGQUIT);//填入3号信号，在执行2号信号处理函数时，屏蔽3号信号
    int ret=sigaction(SIGINT,&act,NULL);
    ERROR_CHECK(ret,-1,"sigaction");
    while(1);
    return 0;
}